技术文档丨开发空间规划算法
自动驾驶的规划和控制紧密联系在一起。在自动驾驶汽车行驶之前,先是由规划模块规划出一条具体的线路,然后交给控制模块去执行,控制汽车行驶。规划模块的职责是规划出一条避开障碍物并且符合汽车动力学模型的路线,而控制模块需要保证汽车一丝不苟的按照规划的轨迹来行驶。
以下,ENJOY
随着基于场景规划的启动,规划模块引入了一个主要的变化,我们意识到需要有场景特定的算法,可以对其进行微调,以增强针对特定场景的自车的轨迹。开放空间规划就是这样一种针对逆向停车和急剧转弯的算法。这个算法最初是受到了几篇论文[1][2][3]的启发。
该算法从两个不同的来源获取输入:
感知数据,包括但不限于障碍。
通过高清地图获得感兴趣区域(ROI)。
一旦数据就位,就会触发开放空间规划,如上图所示。算法本身包括两个阶段:
在步骤1中,为自车生成一个原始的轨迹。本阶段将车辆运动学模型应用于算法中,生成一系列等距点的原始轨迹,如下图所示。红线表示混合A*的原始轨迹输出,将其发送到下一步,优化计算绿色平滑线。
这一步包括两个主要任务:
平滑的轨迹,以获得更好的乘坐舒适性体验,使控制模块更容易跟踪。
确保避免碰撞。
将接收到的原始轨迹作为优化的初始猜测进行迭代。生成的结果是一组点,这些点不是均匀分布的,但是在转弯处附近彼此更靠近,而那些在线性路径上的点较为分散。这不仅保证了更好的转弯,而且由于时间/空间是固定的,点越接近,自车的速度越慢。这也意味着速度跟踪在这一步是可能的,也会使加速度、刹车和转向更合理。
一旦这个阶段完成,输出直接发送到控制模块,并将其发送到自车。
目前规划阶段有两种停车场景使用了开放空间规划 ,即:
自主泊车场景:这个场景被设计用一个曲折的路线将自车停在指定的停车位上。
路边停车场景:这个场景的设计是正常沿着路边停放自车或平行停车。要了解更多现有的规划方案,请参考《Planning README》。
由于该算法目前正在开发中,它目前用于反向和/或并行停车,但也可以在涉及紧急U型转弯的场景中实现,或在紧急车辆经过时用于路边停车。基于场景的规划的主要目的是确保使用针对个别场景的目标算法对汽车的轨迹进行有效规划,就像逆向停车的开放空间规划一样。
[1]:Dolgov, Dmitri, et al. "Path Planning for Autonomous Vehicles in Unknown Semi-Structured Environments." The International Journal of Robotics Research, vol. 29, no. 5, 2010, pp. 485-501., doi:10.1177/0278364909359210.
[2]:Prodan, Ionela, et al. "Mixed-integer representations in control design: Mathematical foundations and applications."" Springer, 2015.
[3]:Xiaojing Zhang, et al. "Optimization-Based Collision Avoidance" (arXiv:1711.03449).
*《Planning README》
https://github.com/ApolloAuto/apollo/tree/master/modules/planning
更多话题讨论、技术交流
可以添加『Apollo小哥哥』为好友
进开发者交流群